# 语义元素
abstract type 抽象语义元素 end
struct 名词 <: 抽象语义元素
    内容::String
end 

"""
动词实际上需要更进一步分解，例如"咬坏"分解为“咬”和“使变坏”。
"""
struct 动词 <: 抽象语义元素
    内容::String
end
struct be动词 <: 抽象语义元素
    内容::String
end
struct 定语 <: 抽象语义元素
    内容::String
end
struct 标点 <: 抽象语义元素
    内容::String
end
# 意图。关于意图的列举放在memory里。
struct 抽象意图
    内容::String
end
# 句子
struct 句子
    内容::Vector{抽象语义元素}
    意图::抽象意图
end
"""
组装语元的规则
"""
function 句子(甲::名词, 是::be动词, 怎样::定语; 意图::抽象意图 = "陈述")
    return 句子([甲, 是, 怎样, 意图转标点(意图)], 意图)
end

function 句子(是::be动词; 意图::抽象意图 = "陈述")
    return 句子([是, 意图转标点(意图)], 意图)
end

